/*
 * @lc app=leetcode.cn id=7 lang=javascript
 *
 * [7] 整数反转
 */

// @lc code=start
/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
  // solution1
  // const a = (x + '').split('');
  // const b = [];
  // const len = a.length;
  // for (let i = 0; i < a.length; i++) {
  //   if (a[i] === '-') {
  //     b.unshift(a[i]);
  //     b.push(a[len - 1 - i])
  //     continue;
  //   }
  //   b.push(a[len - 1 - i])
  // }
  // const re = parseInt(b.join(''));
  // return (re <= -(2 ** 31) || re >= (2 ** 31)) ? 0 : re;

  // solution2
  let rev = 0;
    while (x !== 0) {
        const digit = x % 10;
        x = ~~(x / 10);
        rev = rev * 10 + digit;
        if (rev < Math.pow(-2, 31) || rev > Math.pow(2, 31) - 1) {
            return 0;
        }
    }
    return rev;
};

// @lc code=end